package persistence.dao;

import java.util.List;
import java.util.Set;

import persistence.dto.ProductDTO;
import persistence.dto.ProductGroupDTO;
import persistence.dto.StorageUnitDTO;

public interface IContainerToProductsDAO
{

	/**
	 * 
	 * @param prodID the id of the product
	 * @return returns a set containing the ID's of all containers
	 */
	public List<Integer> getAllContainers(int prodID);
	
	/**
	 * gets all products contained in the product container provided
	 * @param pcID the id of the product container
	 * @return a set of Product DTOs which are mapped to by the product container id
	 */
	public List<Integer> getAllProducts(int pcID);
	
	/**
	 * adds / persists the product pg mapping to memory
	 * @param prodDTO - the product DTO object to be added to the map
	 * @param prodDTO - the pc DTO object to be added to the map
	 * @return returns the return value is useless
	 */
	public int add(ProductDTO prodDTO, ProductGroupDTO pgDTO);
	
	public int add(ProductDTO prodDTO, StorageUnitDTO suDTO);
	
	
	public boolean edit(ProductDTO prodDTO, ProductGroupDTO pgDTO);
	
	public boolean edit(ProductDTO prodDTO, StorageUnitDTO suDTO);
	
	/**
	 * removes the product from the product group from memory
	 * @param productGroupDTO the productGroup to be removed
	 * @return returns true if successful, false otherwise
	 */
	public boolean remove(ProductDTO prodDTO, ProductGroupDTO pgDTO);
	
	/**
	 * removes the product from the product group from memory
	 * @param productGroupDTO the productGroup to be removed
	 * @return returns true if successful, false otherwise
	 */
	public boolean remove(ProductDTO prodDTO, StorageUnitDTO suDTO);
	
	public boolean remove(StorageUnitDTO suDTO);
	
	public boolean remove(ProductGroupDTO pgDTO);
	
	
	
}
